<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        /* 
            在JS中,除了直接创建原始值外,也可以创建原始值的对象
                通过new String可以创建String类型的对象
                通过new Number可以创建Number类型的对象
                通过new Boolean可以创建Boolean类型的对象
                    -但是千万不要这么做

            包装类
                JS中一共有五个包装类
                    String --> 字符串包装为String对象
                    Number --> 数值包装为Number对象
                    Boolean --> 布尔值包装为Boolean对象
                    BigInt --> 大整数包装为BigInt对象
                    Symbol --> 符号包装为Symbol对象
                    - 通过包装类可以将一个原始值包装为一个对象,
                        当我们队一个原始值调用方法或属性时,JS解释器会临时将原始值包装为对应的对象
                            然后调用这个对象的属性或者方法
                        
                    - 由于原始值会被临时转换为对应的对象,这意味着对象中的方法都可以直接通过原始值来调用
        */
       let str = new String("DDD")
       let num = new Number(1)
       let bool = new Boolean(true)
       let bool1 = new Boolean(true)
       alert(bool === bool1)

       let str1 = "ddd"
    //    这个时候会把str1转为对象,然后进行操作,因为没有找到对象
       str1.name = "DDD"
       //一样,但是也因为没有找到对象,所以创建,找name属性,没有,返回Undefined
       console.log(str1.name);

    </script>
</head>
<body>
    
</body>
</html>